<!DOCTYPE HTML>
<html lang="en">
	<head>
		<title>three.js - particles - floor</title>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>
		<style type="text/css">
			body {
				background-color: #000000;
				margin: 0px;
				overflow: hidden;
			}

			a {
				color:#0078ff;
			}
		</style>
	</head>
	<body>

		<script type="text/javascript" src="../build/Three.js"></script>
		<script type="text/javascript" src="js/Stats.js"></script>

		<script type="text/javascript">

			var SCREEN_WIDTH = window.innerWidth;
			var SCREEN_HEIGHT = window.innerHeight;

			var SEPARATION = 100;
			var AMOUNTX = 50;
			var AMOUNTY = 50;

			var container;
			var stats;

			var particle;

			var camera;
			var scene;
			var renderer;

			var mouseX = 0;
			var mouseY = 0;

			var windowHalfX = window.innerWidth / 2;
			var windowHalfY = window.innerHeight / 2;

			init();
			setInterval(loop, 1000 / 60);

			function init() {

				container = document.createElement('div');
				document.body.appendChild(container);

				camera = new THREE.Camera( 75, SCREEN_WIDTH / SCREEN_HEIGHT, 1, 10000 );
				camera.position.z = 1000;

				scene = new THREE.Scene();

				renderer = new THREE.CanvasRenderer();
				renderer.setSize(SCREEN_WIDTH, SCREEN_HEIGHT);

				var material = new THREE.ParticleCircleMaterial(0xffffff, 1);

				for (var ix = 0; ix < AMOUNTX; ix++) {

					for(var iy = 0; iy < AMOUNTY; iy++) {

						particle = new THREE.Particle( material );
						particle.position.x = ix * SEPARATION - ((AMOUNTX * SEPARATION) / 2);
						particle.position.z = iy * SEPARATION - ((AMOUNTY * SEPARATION) / 2);
						scene.addObject( particle );
					}
				}

				container.appendChild(renderer.domElement);

				stats = new Stats();
				stats.domElement.style.position = 'absolute';
				stats.domElement.style.top = '0px';
				container.appendChild(stats.domElement);

				document.addEventListener('mousemove', onDocumentMouseMove, false);
				document.addEventListener('touchstart', onDocumentTouchStart, false);
				document.addEventListener('touchmove', onDocumentTouchMove, false);
			}

			//

			function onDocumentMouseMove(event) {

				mouseX = event.clientX - windowHalfX;
				mouseY = event.clientY - windowHalfY;
			}

			function onDocumentTouchStart( event ) {

				if(event.touches.length > 1) {

					event.preventDefault();

					mouseX = event.touches[0].pageX - windowHalfX;
					mouseY = event.touches[0].pageY - windowHalfY;
				}
			}

			function onDocumentTouchMove( event ) {

				if(event.touches.length == 1) {

					event.preventDefault();

					mouseX = event.touches[0].pageX - windowHalfX;
					mouseY = event.touches[0].pageY - windowHalfY;
				}
			}

			//

			function loop() {

				camera.position.x += (mouseX - camera.position.x) * .05;
				camera.position.y += (-mouseY - camera.position.y) * .05;

				renderer.render(scene, camera);

				stats.update();
			}

		</script>
	</body>
</html>
